﻿using System.Collections.Generic;

namespace UploadClient.Interfaces.Plugins
{
    public interface IPlugin
    {
        /// <summary>
        /// Initialize the class.
        /// <remarks>Plugin is default disabled!</remarks>
        /// </summary>
        void Init(IHost host);

        /// <summary>
        /// Initialize the class with configuration settings.
        /// <remarks>Plugin is default disabled!</remarks>
        /// </summary>
        void Init(IHost host, IPluginConfig settings);

        /// <summary>
        /// Returns the upload provider configuration.
        /// </summary>
        /// <returns>Returns a list with configurations.</returns>
        IEnumerable<IPluginConfig> GetConfiguration();

        /// <summary>
        /// Enables the plugin.
        /// <remarks>Plugin is default disabled!</remarks>
        /// </summary>
        void EnablePlugin();

        /// <summary>
        /// Disables the plugin.
        /// </summary>
        void DisablePlugin();
    }
}
